Gage locations
USGS2 and DS2 have the same coordinates. USGS1 and DS3 have the same
coordinates.
Hydrographs
Notes on gages: So far DS2 and DS3 have not been used. US1 and DS1
are mostly point measurements.
Streamflow differencing between each gage
DS1 minus US1 (uppermost)
Average DS1 minus US1 difference
## [1] 0.03090149
|
Year
|
Avg streamflow difference (m3/s)
|
|
2011
|
0.0232853
|
|
2012
|
0.0138214
|
|
2013
|
0.0334710
|
|
2014
|
0.0497037
|
|
2015
|
0.0665000
|
|
2016
|
NaN
|
|
2017
|
NaN
|
|
2018
|
NaN
|
|
2019
|
NaN
|
|
2020
|
NaN
|
USGS2 minus DS1
Average USGS2 minus DS1 difference
## [1] 0.04210856
|
Year
|
Avg streamflow difference (m3/s)
|
|
2011
|
0.0363444
|
|
2012
|
0.0106020
|
|
2013
|
0.0944612
|
|
2014
|
NaN
|
|
2015
|
NaN
|
|
2016
|
NaN
|
|
2017
|
NaN
|
|
2018
|
NaN
|
|
2019
|
NaN
|
|
2020
|
NaN
|
USGS1 minus USGS2
Average USGS1 minus USGS2 difference
## [1] -0.0001941755
|
Year
|
Avg streamflow difference (m3/s)
|
|
2011
|
-0.0231274
|
|
2012
|
0.0108739
|
|
2013
|
0.0138716
|
|
2014
|
NaN
|
|
2015
|
NaN
|
|
2016
|
NaN
|
|
2017
|
NaN
|
|
2018
|
NaN
|
|
2019
|
NaN
|
|
2020
|
NaN
|
Sum of losses between USGS1 and USGS2
|
Year
|
Month
|
Monthly sum of losses (m3/s)
|
|
2011
|
4
|
-0.3270991
|
|
2011
|
5
|
-1.0456047
|
|
2011
|
6
|
-3.5999679
|
|
2011
|
7
|
0.0700276
|
|
2011
|
8
|
0.6986662
|
|
2011
|
9
|
-0.0434309
|
|
2012
|
4
|
1.9742787
|
|
2012
|
5
|
0.4860510
|
|
2012
|
6
|
0.1782581
|
|
2012
|
8
|
0.2018424
|
|
2012
|
9
|
-0.0854056
|
|
2013
|
5
|
2.4741706
|
|
2013
|
6
|
-0.5456931
|
|
2013
|
7
|
-0.3966977
|
|
2013
|
8
|
-0.5607375
|
Compare Niwot SNOTEL precip to prism pixel
niwot_prism <- read.csv(here('data', 'niwot_prism_compare.csv')) %>%
filter(!row_number() %in% c(1:10)) %>%
rename(date = 1,
prism_mm = 2) %>%
mutate(date = ymd(date),
prism_mm = as.numeric(prism_mm))
niwot_snotel <- prec_update %>%
dplyr::select(c(date, Niwot_Snotel)) %>%
rename(snotel_mm = Niwot_Snotel) %>%
mutate(date = dmy(date))
niwot_compare <- full_join(niwot_prism, niwot_snotel, by = 'date')
niwot_compare <- niwot_compare %>%
mutate(diff_mm = snotel_mm - prism_mm) %>%
na.omit()
rmse(niwot_compare$prism_mm, niwot_compare$snotel_mm)
## [1] 5.491975
pbias(niwot_compare$prism_mm, niwot_compare$snotel_mm)
## [1] 1.8
scatter <- ggplot(niwot_compare, aes(x=snotel_mm, y=prism_mm)) +
geom_point() +
geom_abline(intercept = 0, slope = 1, size=1.5, color="blue")
ggplotly(scatter)
#filter to look at sept - june
niwot_winter_comp <- niwot_compare %>%
mutate(month = month(date)) %>%
filter(!month %in% c(6:8))
summary(niwot_winter_comp)
## date prism_mm snotel_mm diff_mm
## Min. :2011-01-01 Min. : 0.000 Min. : 0.000 Min. :-63.69000
## 1st Qu.:2012-10-24 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: -1.21000
## Median :2014-05-17 Median : 0.410 Median : 0.000 Median : 0.00000
## Mean :2014-06-27 Mean : 2.613 Mean : 2.577 Mean : -0.03675
## 3rd Qu.:2016-03-09 3rd Qu.: 2.910 3rd Qu.: 3.000 3rd Qu.: 0.94000
## Max. :2017-12-31 Max. :68.220 Max. :58.000 Max. : 41.32000
## month
## Min. : 1.000
## 1st Qu.: 3.000
## Median : 5.000
## Mean : 6.358
## 3rd Qu.:10.000
## Max. :12.000
niwot_prismshift <- niwot_compare %>%
mutate_at(c("prism_mm"), funs(lead), n = 1) %>%
mutate(month = month(date)) %>%
#filter(!month %in% c(6:8)) %>%
mutate(diff_mm = snotel_mm - prism_mm)
summary(niwot_prismshift)
## date prism_mm snotel_mm diff_mm
## Min. :2011-01-01 Min. : 0.000 Min. : 0.000 Min. :-17.15000
## 1st Qu.:2012-10-01 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: -0.30250
## Median :2014-07-02 Median : 0.305 Median : 0.000 Median : 0.00000
## Mean :2014-07-02 Mean : 2.437 Mean : 2.393 Mean : -0.04274
## 3rd Qu.:2016-04-01 3rd Qu.: 2.712 3rd Qu.: 3.000 3rd Qu.: 0.00000
## Max. :2017-12-31 Max. :68.220 Max. :71.000 Max. : 13.21000
## NA's :1 NA's :1
## month
## Min. : 1.000
## 1st Qu.: 4.000
## Median : 7.000
## Mean : 6.522
## 3rd Qu.:10.000
## Max. :12.000
##
rmse(niwot_prismshift$prism_mm, niwot_prismshift$snotel_mm)
## [1] NA
NSE(niwot_prismshift$prism_mm, niwot_prismshift$snotel_mm)
## [1] 0.9033148
pbias(niwot_prismshift$prism_mm, niwot_prismshift$snotel_mm)
## [1] 1.8
scatter_shiftday <- ggplot(niwot_prismshift, aes(x=snotel_mm, y=prism_mm)) +
geom_point() +
geom_abline(intercept = 0, slope = 1, size=1.5, color="blue")
ggplotly(scatter_shiftday)
niwot_prismfrac <- niwot_compare %>%
mutate(prism_most_mm = prism_mm * 0.974,
prism_little_mm = prism_mm * 0.026) %>%
mutate_at(c('prism_most_mm'), list(lead), n = 1) %>%
mutate(prism_new_mm = prism_most_mm + prism_little_mm,
diff_prismfrac = snotel_mm - prism_new_mm)
summary(niwot_prismfrac)
## date prism_mm snotel_mm diff_mm
## Min. :2011-01-01 Min. : 0.000 Min. : 0.000 Min. :-63.69000
## 1st Qu.:2012-10-01 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: -1.15000
## Median :2014-07-02 Median : 0.310 Median : 0.000 Median : 0.00000
## Mean :2014-07-02 Mean : 2.437 Mean : 2.393 Mean : -0.04368
## 3rd Qu.:2016-04-01 3rd Qu.: 2.710 3rd Qu.: 3.000 3rd Qu.: 0.57000
## Max. :2017-12-31 Max. :68.220 Max. :71.000 Max. : 61.28000
##
## prism_most_mm prism_little_mm prism_new_mm diff_prismfrac
## Min. : 0.0000 Min. :0.00000 Min. : 0.0000 Min. :-17.33694
## 1st Qu.: 0.0000 1st Qu.:0.00000 1st Qu.: 0.0000 1st Qu.: -0.32569
## Median : 0.2971 Median :0.00806 Median : 0.3458 Median : 0.00000
## Mean : 2.3734 Mean :0.06335 Mean : 2.4367 Mean : -0.04276
## 3rd Qu.: 2.6420 3rd Qu.:0.07046 3rd Qu.: 2.7180 3rd Qu.: 0.00000
## Max. :66.4463 Max. :1.77372 Max. :67.1951 Max. : 14.45982
## NA's :1 NA's :1 NA's :1
scatter_frac <- ggplot(niwot_prismfrac, aes(x=snotel_mm, y=prism_new_mm)) +
geom_point() +
geom_abline(intercept = 0, slope = 1, size=1.5, color="blue")
ggplotly(scatter_frac)
rmse(niwot_prismfrac$prism_new_mm, niwot_prismfrac$snotel_mm)
## [1] NA
NSE(niwot_prismfrac$prism_new_mm, niwot_prismfrac$snotel_mm)
## [1] 0.9040468
pbias(niwot_prismfrac$prism_new_mm, niwot_prismfrac$snotel_mm)
## [1] 1.8
Compare prism solar rad to flux solar rad
srad <- solr %>%
dplyr::select(-1) %>%
filter(!row_number() %in% c(1:17)) %>%
replace(.==-9999, NA) %>%
rename(date = 1,
prism_w = 2,
prism_m = 3,
prism_e = 4,
gordon_s = 5,
gordon_n = 6,
greenlake = 7) %>%
mutate(date = dmy(date))
niwot_srad <- Niwo %>%
mutate(date = ymd(date)) %>%
rename(niwot_flux_mjm2 = 3) %>%
dplyr::select(-c(watts_per_m2)) %>%
replace(. == -9999, NA)
## original
srad_compare <- full_join(srad, niwot_srad, by = 'date') %>%
dplyr::select(c(date, prism_w, niwot_flux_mjm2)) %>%
mutate(diff = niwot_flux_mjm2 - prism_w) %>%
na.omit()
summary(srad_compare)
## date prism_w niwot_flux_mjm2 diff
## Min. :2000-01-01 Min. : 6.672 Min. : 0.7053 Min. :-47.120
## 1st Qu.:2006-08-01 1st Qu.:24.532 1st Qu.:10.6542 1st Qu.:-21.880
## Median :2011-05-22 Median :32.698 Median :15.8284 Median :-16.441
## Mean :2011-01-26 Mean :33.781 Mean :16.4250 Mean :-17.356
## 3rd Qu.:2016-03-11 3rd Qu.:42.702 3rd Qu.:22.1307 3rd Qu.:-12.148
## Max. :2020-12-30 Max. :65.126 Max. :35.0707 Max. : 5.821
scatter_srad_orig <- ggplot(srad_compare, aes(x=niwot_flux_mjm2, y=prism_w)) +
geom_point() +
geom_abline(intercept = 0, slope = 1, size=1.5, color="blue")
ggplotly(scatter_srad_orig)
## 1 day shift
srad_shift1day <- srad_compare %>%
mutate_at(c("prism_w"),list(lead), n = 1) %>%
na.omit()
scatter_srad_1day <- ggplot(srad_shift1day, aes(x=niwot_flux_mjm2, y=prism_w)) +
geom_point() +
geom_abline(intercept = 0, slope = 1, size=1.5, color="blue")
ggplotly(scatter_srad_1day)
#scatter_srad_1day
summary(srad_shift1day)
## date prism_w niwot_flux_mjm2 diff
## Min. :2000-01-01 Min. : 6.672 Min. : 0.7053 Min. :-47.120
## 1st Qu.:2006-08-01 1st Qu.:24.531 1st Qu.:10.6532 1st Qu.:-21.880
## Median :2011-05-22 Median :32.707 Median :15.8317 Median :-16.442
## Mean :2011-01-26 Mean :33.783 Mean :16.4258 Mean :-17.357
## 3rd Qu.:2016-03-10 3rd Qu.:42.702 3rd Qu.:22.1345 3rd Qu.:-12.149
## Max. :2020-12-29 Max. :65.126 Max. :35.0707 Max. : 5.821
rmse(srad_shift1day$prism_w, srad_shift1day$niwot_flux_mjm2)
## [1] 19.71444
pbias(srad_shift1day$prism_w, srad_shift1day$niwot_flux_mjm2)
## [1] 105.7
## shift by percentage
srad_fracshift <- srad_compare %>%
mutate(prism_most = prism_w * 0.3,
prism_little = prism_w * 0.7) %>%
mutate_at(c('prism_most'), list(lead), n = 1) %>%
mutate(prism_new = prism_most + prism_little,
diff_prismfrac = niwot_flux_mjm2 - prism_new) %>%
na.omit()
scatter_srad_frac <- ggplot(srad_fracshift, aes(x=niwot_flux_mjm2, y=prism_new)) +
geom_point() +
geom_abline(intercept = 0, slope = 1, size=1.5, color="blue")
ggplotly(scatter_srad_frac)
#scatter_srad_frac
summary(srad_fracshift)
## date prism_w niwot_flux_mjm2 diff
## Min. :2000-01-01 Min. : 6.672 Min. : 0.7053 Min. :-47.120
## 1st Qu.:2006-08-01 1st Qu.:24.534 1st Qu.:10.6532 1st Qu.:-21.880
## Median :2011-05-22 Median :32.707 Median :15.8317 Median :-16.442
## Mean :2011-01-26 Mean :33.783 Mean :16.4258 Mean :-17.357
## 3rd Qu.:2016-03-10 3rd Qu.:42.702 3rd Qu.:22.1345 3rd Qu.:-12.149
## Max. :2020-12-29 Max. :65.126 Max. :35.0707 Max. : 5.821
## prism_most prism_little prism_new diff_prismfrac
## Min. : 2.002 Min. : 4.67 Min. : 7.113 Min. :-48.055
## 1st Qu.: 7.359 1st Qu.:17.17 1st Qu.:24.666 1st Qu.:-21.589
## Median : 9.812 Median :22.89 Median :33.098 Median :-16.360
## Mean :10.135 Mean :23.65 Mean :33.783 Mean :-17.357
## 3rd Qu.:12.811 3rd Qu.:29.89 3rd Qu.:42.200 3rd Qu.:-12.443
## Max. :19.538 Max. :45.59 Max. :63.675 Max. : 4.276
rmse(srad_fracshift$prism_new, srad_fracshift$niwot_flux_mjm2)
## [1] 18.74241
pbias(srad_fracshift$prism_new, srad_fracshift$niwot_flux_mjm2)
## [1] 105.7
## bring in daymet
## Daily total radiation (MJ/m2/day) can be calculated as follows: ((srad (W/m2) * dayl (s/day)) / l,000,000)
niwot_daymet <- daym %>%
filter(!row_number() %in% c(1:7)) %>%
rename(year = 1,
doy = 2,
srad_wm2 = 3) %>%
mutate(date = as.Date(doy),
month = month(date),
day = day(date),
date = make_date(year, month, day),
daymet_mjm2 = (srad_wm2 * 86400) / 1000000) %>%
dplyr::select(-c(year, doy, month, day))
niwot_daymet_comp <- full_join(niwot_srad, niwot_daymet, by = 'date') %>%
dplyr::select(c(date, niwot_flux_mjm2, daymet_mjm2)) %>%
na.omit()
scatter_srad_daymet <- ggplot(niwot_daymet_comp, aes(x=niwot_flux_mjm2, y=daymet_mjm2)) +
geom_point() +
geom_abline(intercept = 0, slope = 1, size=1.5, color="blue")
ggplotly(scatter_srad_daymet)
#scatter_srad_frac
#summary(srad_fracshift)
rmse(niwot_daymet_comp$daymet_mjm2, niwot_daymet_comp$niwot_flux_mjm2)
## [1] 22.91598